package com.ghy.result;

import lombok.Data;

import java.io.Serializable;

/**
 * @author GaoHeYang
 */
@Data
public class Result<T> implements Serializable {
    /** 响应代码*/
    private Integer code;
    /** 响应描述*/
    private String message;
    /**响应数据*/
    private T data;

    /**创建Result类，默认返回成功状态码和响应描述，无响应数据*/
    public Result() {
        this(ResultCode.SUCCESS.getCODE(), ResultCode.SUCCESS.getMESSAGE(), null);
    }

    /**
     * 创建Result类，默认返回成功状态码和响应描述，手动传递响应数据
     * @param data 相应数据
     */
    public Result(T data) {
        this(ResultCode.SUCCESS.getCODE(), ResultCode.SUCCESS.getMESSAGE(), data);
    }

    /**
     * *创建Result类，手动传递响应状态枚举实例，默认响应数据为null
     * @param resultCode 响应状态枚举实例
     */
    public Result(ResultCode resultCode) {
        this(resultCode.getCODE(), resultCode.getMESSAGE(), null);
    }


    /**
     * *创建Result类，手动传递响应状态枚举实例和响应数据
     * @param resultCode 响应状态枚举实例
     * @param data 响应数据
     */
    public Result(ResultCode resultCode, T data) {
        this(resultCode.getCODE(), resultCode.getMESSAGE(), data);
    }


    /**
     * *创建Result类，手动传递响应代码，响应描述和响应数据
     * @param code 响应代码
     * @param message 响应描述
     * @param data 响应数据
     */
    public Result(Integer code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }
}
